package executable.instance.inheritance;

public class SimpleInheritanceCalls {

    /**
     * On Instance A (the top)
     */

    public static String publicNoOverrideOnA() {
        return new SimpleInheritanceA().publicNoOverride();
    }

    public static String publicFirstGenerationOverrideOnA() {
        return new SimpleInheritanceA().publicFirstChildOverride();
    }

    public static String publicSecondGenerationOverrideOnA() {
        return new SimpleInheritanceA().publicSecondGenerationOverride();
    }

    public static String publicBothGenerationOverrideOnA() {
        return new SimpleInheritanceA().publicBothGenerationOverride();
    }

    public static int publicSuperCallOnA() {
        return new SimpleInheritanceA().publicSuperCall();
    }

    public static int publicSuperCallWithJumpOnA() {
        return new SimpleInheritanceA().publicSuperCallWithJump();
    }

    /**
     * On Instance B (the middle)
     */

    public static String publicNoOverrideOnB() {
        return new SimpleInheritanceB().publicNoOverride();
    }

    public static String publicFirstGenerationOverrideOnB() {
        return new SimpleInheritanceB().publicFirstChildOverride();
    }

    public static String publicSecondGenerationOverrideOnB() {
        return new SimpleInheritanceB().publicSecondGenerationOverride();
    }

    public static String publicBothGenerationOverrideOnB() {
        return new SimpleInheritanceB().publicBothGenerationOverride();
    }

    public static int publicSuperCallOnB() {
        return new SimpleInheritanceB().publicSuperCall();
    }

    public static int publicSuperCallWithJumpOnB() {
        return new SimpleInheritanceB().publicSuperCallWithJump();
    }


    /**
     * On Instance C (the bottom)
     */

    public static String publicNoOverrideOnC() {
        return new SimpleInheritanceC().publicNoOverride();
    }

    public static String publicFirstGenerationOverrideOnC() {
        return new SimpleInheritanceC().publicFirstChildOverride();
    }

    public static String publicSecondGenerationOverrideOnC() {
        return new SimpleInheritanceC().publicSecondGenerationOverride();
    }

    public static String publicBothGenerationOverrideOnC() {
        return new SimpleInheritanceC().publicBothGenerationOverride();
    }

    public static int publicSuperCallOnC() {
        return new SimpleInheritanceC().publicSuperCall();
    }

    public static int publicSuperCallWithJumpOnC() {
        return new SimpleInheritanceC().publicSuperCallWithJump();
    }

}
